public class b {
    public static void main(String[] args) {
        // 1. 整数类型
        byte byteNum = 127; // 8位，范围：-128 到 127
        short shortNum = 32767; // 16位，范围：-32768 到 32767
        int intNum = 2147483647; // 32位，最常用的整数类型
        long longNum = 9223372036854775807L; // 64位，必须以L或l结尾

        // 2. 浮点类型
        float floatNum = 3.1415926f; // 32位单精度，必须以F或f结尾
        double doubleNum = 3.141592653589793; // 64位双精度，默认的浮点类型

        // 3. 字符类型
        char char1 = 'A'; // 单个字符
        char char2 = '\u0041'; // Unicode编码表示（与'A'等价）
        char char3 = '中'; // 可以表示中文字符

        // 4. 布尔类型
        boolean isTrue = true;
        boolean isFalse = false;

        // 打印各类型的值
        System.out.println("字节型 byte: " + byteNum);
        System.out.println("短整型 short: " + shortNum);
        System.out.println("整型 int: " + intNum);
        System.out.println("长整型 long: " + longNum);
        System.out.println("单精度浮点型 float: " + floatNum);
        System.out.println("双精度浮点型 double: " + doubleNum);
        System.out.println("字符型 char1: " + char1 + " (ASCII值: " + (int)char1 + ")");
        System.out.println("字符型 char2: " + char2);
        System.out.println("字符型 char3: " + char3);
        System.out.println("布尔型 isTrue: " + isTrue);

        // 演示基本数据类型的默认值
        System.out.println("\n基本数据类型的默认值:");
        DefaultValues defaults = new DefaultValues();
        defaults.printDefaults();

        // 演示类型转换
        System.out.println("\n类型转换示例:");
        int intValue = 100;
        long longValue = intValue; // 自动类型转换（小转大）
        System.out.println("int转long: " + longValue);

        long bigNum = 200;
        int convertedInt = (int) bigNum; // 强制类型转换（大转小）
        System.out.println("long转int: " + convertedInt);
    }

    // 内部类用于展示成员变量的默认值
    static class DefaultValues {
        byte byteDefault;
        short shortDefault;
        int intDefault;
        long longDefault;
        float floatDefault;
        double doubleDefault;
        char charDefault;
        boolean booleanDefault;

        void printDefaults() {
            System.out.println("byte默认值: " + byteDefault);
            System.out.println("short默认值: " + shortDefault);
            System.out.println("int默认值: " + intDefault);
            System.out.println("long默认值: " + longDefault);
            System.out.println("float默认值: " + floatDefault);
            System.out.println("double默认值: " + doubleDefault);
            System.out.println("char默认值: '" + charDefault + "' (ASCII值: " + (int)charDefault + ")");
            System.out.println("boolean默认值: " + booleanDefault);
        }
    }
}

